package Day20.Predicate;

/**
 * @version 1.0
 * @BelongsProject:IntelliJ IDEA
 * @BelongsPackage:Day20.Predicate
 * @Author:hyhWTX
 * @ClassName:Demo01Predicate
 * @CreateTime:2022年-10月-02日 16:29
 * @Description: TODO (一句话描述以下该类的功能)
 */

import java.util.function.Predicate;

/**
 * java .utiL .function .Predicate<T>接口
 * 作用:对某种数据类型的数据进行判断,结果返回一个boolean值
 * <p>
 * Predicate接口中包含一个抽象方法：
 * boolean test (T t)：用来对指定数据类型数据进行判断的方法
 * 结果：
 * 符合条件：返回true
 * 不符合条件：返回:false
 */

public class Demo01Predicate {
    /**
     * 定义一个方法：
     * 参数传递一个String类型的字符串数据
     * 传递一个Predicate接口，泛型使用String
     * 使用Predicate中的方法test对字符串进行判断，并把判断的结构返回。
     */
    public static boolean checkString(String s, Predicate<String> pre) {
        return pre.test(s);
    }

    public static boolean checkString2(String s, Predicate<String> pre2) {
        return pre2.test(s);
    }

    public static void main(String[] args) {
        //定义一个字符串
        String s = "abcdehdsa";
        //调用checkString方法对字符串进行校验，参数传递字符串和Lambda表达式
//        boolean b = checkString(s, (String str) -> {
//            //对参数传递的字符串进行判断,判断字符串的长度是否大于5,并把判断的结果返回
//            return str.length() > 5;
//        });
//        //优化一下Lambda表达式
//        boolean b = checkString(s, (String str) -> str.length() > 5);
//        System.out.println(b);

        //定义一个字符串
        String s2 = "abdkche";
        boolean b2= checkString2(s,(String str2)->{
            //判断字符串长度是否大于10
           return str2.length()>10;
        });
        System.out.println(b2);
    }
}
